/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package app.web;

import app.modelo.Libro;
import app.negocio.GestionLibreria;
import app.negocio.LibroNoEncontradoException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

/**
 * Clase que representa al listener de la aplicación
 *
 * @author Johann Pando.
 */
public class ListenerAplicacion implements ServletContextListener {

    private GestionLibreria gestionLibreria;

    // Este metodo captura el evento al arrancar la aplicacion
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        gestionLibreria = new GestionLibreria();
        ServletContext aplicacion = sce.getServletContext();

        try {
            // recuperamos el parametro inicial del servlet del objeto ServletConfig
            String isbn = aplicacion.getInitParameter("isbnLibroOfertaDia");
            Libro libro = gestionLibreria.consultarISBN(isbn);
            if (libro != null) {
                // Recuperar el contexto del servlet es lo mismo que el contexto de la aplicacion
                StringBuilder msgOfertaDia = new StringBuilder();
                msgOfertaDia.append("El libro recomendado de hoy es: ").append(libro.getTitulo()).append(" - Precio: ").append(libro.getPrecio());
                aplicacion.setAttribute("msgOfertaDia", msgOfertaDia);
            } else {
                aplicacion.setAttribute("msgOfertaDia", "Hoy no hay libros que recomendar.");
            }
        } catch (LibroNoEncontradoException ex) {
            //Se captura la excepción al no encontrar el libro.
            Logger.getLogger(ListenerAplicacion.class.getName()).log(Level.SEVERE, null, ex);
            // Se añade un mensaje indicando que no hay libros a recomendar.
            aplicacion.setAttribute("msgOfertaDia", "Hoy no hay libros que recomendar.");
        }

    }

    // Este metodo captura el evento al detener la aplicacion
    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("Se va a parar la aplicacion <<<<<<<<<<<<<<<<<<<<<<<");
    }
}
